Designing a Theorem Prover

نویسنده

  • Lawrence C. Paulson
چکیده

ion, and substitution is simple: fun replace_term (u,new) t = if t=u then new else case t of Fun(a,ts) => Fun(a, map (replace_term(u,new)) ts) | _ => t; fun abstract t = let fun abs i (Pred(a,ts)) = Pred(a, map (replace_term (t, Bound i)) ts) | abs i (Conn(b,As)) = Conn(b, map (abs i) As) | abs i (Quant(q,b,A)) = Quant(q, b, abs (i+1) A) in abs 0 end; fun subst_bound t = let fun subst i (Pred(a,ts)) = Pred(a, map (replace_term (Bound i, t)) ts) | subst i (Conn(b,As)) = Conn(b, map (subst i) As) | subst i (Quant(q,b,A)) = Quant(q, b, subst (i+1) A) in subst 0 end; Observe the use of the functional map to apply a function over a list, getting a list of results. This is used to handle the arguments of functions and predicates and the subformulae of connectives. 2.4 Parsing and printing A good quarter of Folderol is concerned with parsing and printing of formulae. Let us pass over this quickly. Abstraction is used only in the parser: given an input string for ∀x.A it parses A treating x as a constant, then abstracts over x. This is hidden in the function fun makeQuant q b A = Quant(q, b, abstract (Fun(b,[])) A); Recall that a constant is a 0-place function. Similarly the printer, given the formula ∀x.A, substitutes a constant named x for the bound variable in A. The output is misleading if the body already contains a constant x. A better printer would make sure the name was unique. Identifiers are sequences of letters or digits. Examples of terms include r 12 banana constants ?s ?12 ?apple variables f(x,?y) succ(succ(0)) function applications The parser is crude. It accepts f(f(f),f(f,f),f), for there is no table of function names. Also parameters cannot be expressed: an identifier by itself is

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Designing Examples for Semantically Guided Hierarchical Deduction

Semantically guided hierarchical deduction prover is a resolution-based theorem-proving procedure which is capable of using the domain dependent knowledge presented in well designed examples. This paper gives an overview of the basic deduction components of the prover, investigates some rules for human design of examples, and demonstrates their usage in proving several non-trivial theorems.

متن کامل

Applying a Theorem Prover to the Verification of Optimistic Replication Algorithms

The Operational Transformation (OT) approach is a technique for supporting optimistic replication in collaborative and mobile systems. It allows the users to concurrently update the shared data and exchange their updates in any order since the convergence of all replicas, i.e. the fact that all users view the same data, is ensured in all cases. However, designing algorithms for achieving conver...

متن کامل

The Design of the CADE-16 Inductive Theorem Prover Contest

"Progress in science is only achieved through careful analysis of methods and their power. Designing without analysis is idle speculation. lmplementatzon without analysis is tinkering. Alone they have no research value. All too often we read of major pieces of Al work that stop with the engineering steps. But we need to know how the zrnplemented program embodies the designs and that the program...

متن کامل

MSPASS: Modal Reasoning by Translation and First-Order Resolution

mspass is an extension of the first-order theorem prover spass, which can be used as a modal logic theorem prover, a theorem prover for description logics and a theorem prover for the relational cal-

متن کامل

A Self-Modifying Theorem Prover

Theorem provers can be viewed as containing declarative knowledge (in the form of axioms and lemmas) and procedural knowledge (in the form of an algorithm for proving theorems). Sometimes, as in the case of commutative laws in a Knuth-Bendix prover, it is appropriate or necessary to transfer knowledge from one category to the other. We describe a theorem proving system that independently recogn...

متن کامل

SPEAR Theorem Prover

SPEAR is a modular arithmetic theorem prover designed for proving software verification conditions. The core of the theorem prover is a fast and simple SAT solver, which is described in this paper.

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:
  • CoRR

دوره cs.LO/9301110  شماره 

صفحات  -

تاریخ انتشار 1990